package com.whfc.ms.api.sys.service;

import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppFenceDTO;
import com.whfc.emp.entity.AppEntryApplication;
import com.whfc.emp.entity.ConfirmationRecord;
import com.whfc.entity.dto.Apply.rep.ArrivalConfirmationDTO;
import com.whfc.entity.dto.Apply.rep.RegionRep;
import com.whfc.entity.dto.Apply.rep.WorkPlan;
import com.whfc.entity.dto.Apply.req.AppEntryApplicationReq;
import com.whfc.fuum.entity.WxUser;
import com.whfc.ms.api.sys.dto.ConfirmRequestDTO;
import com.whfc.entity.dto.Apply.req.SafetyTrainingExamReq;
import com.whfc.entity.dto.Apply.req.WorkPlanCreatePlanReq;
import com.whfc.env.dto.GasDetectionQueryReq;
import com.whfc.env.dto.GasDetectionResultDTO;
import com.whfc.fuum.entity.SysUser;
import com.whfc.mach.dto.OpenApiMachDTO;
import com.whfc.ms.api.sys.dto.WorkPlanDTO;

import java.util.List;

public interface SysWorkPlanService {
    String saveWorkPlan(SysUser user, WorkPlanCreatePlanReq req);

    List<AppEntryApplication> selectByCreator(SysUser user);

    List<SafetyTrainingExamReq> queryConstructionWorkers(Integer id);

    List<RegionRep> queryWorkArea(Integer deptId);

    List<OpenApiMachDTO> queryMach(Integer deptId);

    List<WorkPlan> entryReview(SysUser user,Integer deptId,String createTimeBegin,String createTimeEnd);

    String confirmExit(Integer personOrDevice, Integer isExit,Integer planId);

    int confirm(SysUser user,ConfirmRequestDTO requestDTO);

    PageData<ConfirmationRecord> confirmList(SysUser user, ConfirmRequestDTO requestDTO);

    PageData<WorkPlanDTO> queryReviewpageList(SysUser user, AppEntryApplicationReq request);

    PageData<ArrivalConfirmationDTO> list(AppEntryApplicationReq req);

    void edit(SysUser user,WorkPlanCreatePlanReq req);

    WorkPlan detail(Integer id);

    String review(SysUser user,Integer status, Integer id);

    List<AppFenceDTO> areaList();

    List<WorkPlanDTO> reviewpageList(SysUser user, AppEntryApplicationReq request);

    /**
     * 导出工作计划审核列表
     * 
     * @param user 当前用户
     * @param request 查询请求参数
     * @return 导出文件路径
     */
    String exportWorkPlanReviewList(SysUser user, AppEntryApplicationReq request);

    /**
     * 获取工作计划到场确认前气体检测数据
     * 
     * @param planId 工作计划ID
     * @return 气体检测数据结果
     */
    GasDetectionResultDTO getGasDetectionData(GasDetectionQueryReq planId);
}